home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 7.0 KB | 161 lines |
- DEFINITION MODULE TRAPdefs;
-
- (*****************************************************************************)
- (* Hier sind alle Deklarationen enthalten, um Betriebssystemaufrufe ueber *)
- (* TRAPs abzusetzen. Da MODULA keine Prozeduren mit variablen Parametern ge- *)
- (* stattet, mussten saemtliche bei Betriebssystemaufrufen vorkommende Kombi- *)
- (* nationen von Wort- und Langwortparametern beruecksichtigt werden. *)
- (* Dies sind wirklich nur Deklarationen, keine Prozeduraufrufe! Wird eine *)
- (* solche 'Prozedur' im Quelltext mit aktuellen Parametern 'aufgerufen', so *)
- (* wird nur Code zum Ablegen der Parameter ( und der Funktionsnummer ) auf *)
- (* dem Stack und der Trap selbst an der Aufrufstelle erzeugt - kompakter *)
- (* gehts nicht. *)
- (* *)
- (* Der Name einer Prozedur gibt Aufschluss ueber die Art und Reihenfolge der *)
- (* Parameter: Angefangen vom ersten bis zum letzten Parameter wird die *)
- (* Groesse ( w ort oder l angwort ) angegeben. Haben aufeinanderfolgende *)
- (* Parameter die gleiche Groesse, werden sie mit einem Zaehler vor dem *)
- (* Groessenbuchstaben zusammengefasst. In der Parameterliste ist die Reihen- *)
- (* folge der Parameter wegen der Ablagekonvention des Compilers genau umge- *)
- (* kehrt: letzter Parameter zuerst, Funktionsnummer zuletzt. *)
- (* *)
- (* Als Beispiel XBIOS2l1w in Assembler: *)
- (* *)
- (* move.w p3, -(sp) * ein Wortparameter -> 1w *)
- (* * zwei Langwortpar. -> 2l *)
- (* move.l p2, -(sp) * oder pea p2 *)
- (* move.l p1, -(sp) * -"- p1 *)
- (* move.w #fnkt, -(sp) *)
- (* trap #14 *)
- (*___________________________________________________________________________*)
- (* 06-Mae-90 , Holger Kleinschmidt *)
- (*****************************************************************************)
-
- FROM SYSTEM IMPORT (* TYPE *) WORD;
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- CONST
- (* 68000-Register, a4 - a7 ( sp ) werden staendig
- * vom System benoetigt
- *)
-
- d0 = 0; a0 = 8;
- d1 = 1; a1 = 9;
- d2 = 2; a2 = 10;
- d3 = 3; a3 = 11;
- d4 = 4; a4 = 12;
- d5 = 5; a5 = 13;
- d6 = 6; a6 = 14;
- d7 = 7; sp = 15;
-
- (* Betriebssystem-TRAPs *)
-
- CONST
- XBIOStrap = 4E4EH;
- BIOStrap = 4E4DH;
- GEMDOStrap = 4E41H;
- GEMtrap = 4E42H;
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- PROCEDURE XBIOS0 ( fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS1w ( p1, fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS2w ( p2, p1, fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS6w ( p6, p5, p4,
- p3, p2, p1,
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS1l ( p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS3l ( p3, p2, p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS1w1l ( p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS1w2l ( p3, p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS3w1l ( p4 : LONGCARD;
- p3, p2, p1,
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS1l1w ( p2 : WORD;
- p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS2l1w ( p3 : WORD;
- p2, p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS2l2w ( p4, p3 : WORD;
- p2, p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS2l5w ( p7, p6,
- p5, p4, p3 : WORD;
- p2, p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- PROCEDURE XBIOS2l5w1l1w ( p9 : WORD;
- p8 : LONGCARD;
- p7, p6, p5,
- p4, p3 : WORD;
- p2, p1 : LONGCARD;
- fnkt : WORD ); CODE( XBIOStrap );
-
- (*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
-
- PROCEDURE BIOS0 ( fnkt : WORD ); CODE( BIOStrap );
-
- PROCEDURE BIOS1w ( p1, fnkt : WORD ); CODE( BIOStrap );
-
- PROCEDURE BIOS2w ( p2, p1, fnkt : WORD ); CODE( BIOStrap );
-
- PROCEDURE BIOS1l ( p1 : LONGCARD;
- fnkt : WORD ); CODE( BIOStrap );
-
- PROCEDURE BIOS1w1l ( p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( BIOStrap );
-
- PROCEDURE BIOS1w1l3w ( p5, p4, p3 : WORD;
- p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( BIOStrap );
-
- (*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
-
- PROCEDURE GEMDOS0 ( fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1w ( p1, fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS2w ( p2, p1, fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1l ( p1 : LONGCARD;
- fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1w2l ( p3, p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1w3l ( p4, p3, p2 : LONGCARD;
- p1, fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1l1w ( p2 : WORD;
- p1 : LONGCARD;
- fnkt : WORD ); CODE( GEMDOStrap );
-
- PROCEDURE GEMDOS1l2w ( p3, p2 : WORD;
- p1 : LONGCARD;
- fnkt : WORD ); CODE( GEMDOStrap );
-
- (*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
-
- PROCEDURE GEM0 ( ); CODE( GEMtrap ); (* Parameter in d0, d1 *)
-
-
- END TRAPdefs.
-